package com.itany.corejava.code08_集合.collections;

/**
 * @author MissChen
 * @date 2024年03月06日 11:12
 */

import java.util.*;
import java.util.Map.Entry;

/**
 * 控制台输入一个字符串，统计字符串中每个字符出现的次数，保存到HashMap集合中
 * 通过排序打印出次数最多的前三个字符及次数
 */
public class Test02_练习 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String s=sc.next();
        HashMap<Character,Integer> map=new HashMap<>();
        for(int i=0;i<s.length();i++){//abcaa
            char c=s.charAt(i);//取出当前的字符'a'  'b' 'c'  'a'  'a'
            map.put(c, map.containsKey(c)?map.get(c)+1:1);

        }
        System.out.println(map);
        Set<Entry<Character,Integer>> entries=map.entrySet();
        List<Entry<Character,Integer>> list=new ArrayList<>(entries);
        System.out.println(list);
        Collections.sort(list, new Comparator<Entry<Character, Integer>>() {
            @Override
            public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
                if(o1.getValue()>o2.getValue()){
                    return -1;
                }else if(o2.getValue()<o2.getValue()){
                    return 1;
                }
                return 0;
            }
        });
        System.out.println(list);

        for (int i=0;i<3;i++){
            Entry<Character,Integer> entry=list.get(i);
            System.out.println("字符:"+entry.getKey()+",出现次数:"+entry.getValue());
        }


    }
}
